/*
 * PintarCampo.java
 *
 * Created on 5 de mayo de 2007, 14:31
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.iu;

import futbol.Bola;
import futbol.Equipo;
import futbol.General;
import futbol.Jugador;
import futbol.Partido;
import futbol.tacticas.concursantes.Tactica;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;

/**
 *
 * @author Jorge
 */
public class PintarCampo {
    
    private Partido partido;
    private int auxX,auxY;
    private int dx=300, dy=210;
    private String nombres[]=new String[2];
    private Font font=new Font("ARIAL", Font.BOLD, 15);
    private int time;
    
    /** Creates a new instance of PintarCampo */
    public PintarCampo(Partido partido) {
        this.partido=partido;
        
    }
    
    public void setAux(int x, int y){
        auxX=x;
        auxY=y;
    }
    
    public void setTime(int time){
        this.time=time;
    }
    
    private void pintaMarcador(Graphics g, int n){
      if (nombres[n]==null){
          nombres[n] = partido.getTactica(n).getNombre();
          nombres[n] = nombres[n].substring(0,Math.min(nombres[n].length(),15));
      }
      g.setFont(font);
      g.drawString(nombres[n] + " : " + partido.getPuntos(n), n*240+110, 50);
    }    
    
    public void pintarPosicionBolaParaEmpate(Graphics g){
        g.setColor(Color.red);
        long nPosicionBola=partido.getPosicionBolaParaEmpate();
        int nLongitudBarra=General.control((int)(nPosicionBola/10),-160,160);
        if (nLongitudBarra>0)
            g.fillRect(dx,dy+170,nLongitudBarra,5);
        if (nLongitudBarra<0)
            g.fillRect(dx+nLongitudBarra,dy+170,-nLongitudBarra,5);
    }    

    public void pintarMarcadores(Graphics g){
        g.setColor(Color.white);
        
        for (int n=0;n<2;n++)
            pintaMarcador(g,n);
        
        g.drawString(auxX + "," + auxY, 10, 390);
        int min=time/600;
        int seg=(time%600)/10;
        g.drawString(General.format(min, seg), 280, 50);
        if (time>=1800)
            g.drawString("Gana : " + partido.getTactica(partido.getGanador()).getNombre(), 250, 365);
    }
    
    public void pintarBola(Graphics g){
        Bola bola=partido.getBola();
        int x=(int)bola.getX()+dx-3;
        int y=(int)bola.getY()+dy-3;
        
        g.setColor(Color.white);
        g.fillOval(x,y,6,6);
        g.setColor(Color.black);
        g.drawOval(x,y,6,6);
        
    }
    
    public void pintarJugadores(Graphics g){
        Color col2[]={Color.white, Color.black};
        Jugador jaux;
        int x,y;
        for (int n=0;n<2;n++){
            Equipo e=partido.getEquipo(n);
            Tactica t=partido.getTactica(n);
            Color colRopa[]=new Color[2];
            try{
            	colRopa[0]=t.getColor1();
            }catch(Exception eC1){
            	colRopa[0]=Color.black;
            }
            try{
            	colRopa[1]=t.getColor2();
            }catch(Exception eC2){
            	colRopa[1]=Color.black;
            }
            for (int m=0;m<11;m++){
                jaux=e.getJugador(m);
                x=(int)(jaux.getX()+dx-10);
                y=(int)(jaux.getY()+dy-10);
                g.setColor(col2[n%2]);
                g.fillOval(x,y,20,20);
                g.setColor(colRopa[0]);
                g.fillArc(x+1,y+1,18,18,0,180);
                g.setColor(colRopa[1]);
                g.fillArc(x+1,y+1,18,18,0,-180);
                try{
                	g.setColor(t.getColorNumero());
                }catch(Exception eC3){
                	g.setColor(Color.white);
                }
                int nNumero=jaux.getNumero();
                if (nNumero<10)
                    g.drawString(""+nNumero, x+7, y+16);
                else
                    g.drawString(""+nNumero, x+2, y+16);
            }
        }
    }

    public void pintarBloqueoActivado(Graphics g){
        int nBloqueadoActivo=partido.getBola().getBloqueoActivado();
        if (nBloqueadoActivo>0){
            g.setColor(new Color(nBloqueadoActivo*25,0,0));
            g.drawString("B",10,40);
        }
    }    
    
    public void pintar(Graphics gdb){
        pintarMarcadores(gdb);
        pintarJugadores(gdb);
        pintarBola(gdb);
        pintarPosicionBolaParaEmpate(gdb);
        pintarBloqueoActivado(gdb);
    }
    
    // *********************************************************
    // *
    // *  Mejoras aadidas para versin 1.1
    // *
    // *  -Resaltar marcadores al marcar gol.
    // *********************************************************
    private void pintaYEsperaMarcador(Graphics g, int n, Color color)    
    {
      g.setColor(color) ;
      pintaMarcador(g, n) ;
      
      try
      {
        Thread.sleep(50) ;
      } 
      catch (InterruptedException ex)
      {
        ex.printStackTrace();
      }
    }
    
    public void resaltaMarcador(Graphics g, int n)
    {
      Color color = Color.WHITE ;

      long current = System.currentTimeMillis() ;
      boolean toDark = true ;
      
      while (System.currentTimeMillis() - current < 2000)
      {
        pintaYEsperaMarcador(g, n, color) ;
        
        if (color.getRGB() < Color.darkGray.getRGB())
          toDark = false ;
        else if (color.getRGB() >= Color.white.getRGB())
          toDark = true ;
        
        if (toDark)
          color = color.darker() ;
        else
          color = color.brighter() ;

      }
      
      g.dispose() ;
    }        
}
